rollingApply <- function(x,nLag,f,...){
  n <- length(x)
  startIdx <- 1:(n-nLag+1)
  endIdx <- (nLag):n
  idx <- cbind(startIdx,endIdx)
  apply(idx,1,function(idx,x,f,...){
    f(x[idx[1]:idx[2]],...)
  },x,f,...)
}         

rollSapply <- function(x,nLag,f,...){
	nx <- length(x)
	n <- nx - nLag + 1
	sapply(1:n,function(i,x,f,nLag,...){
				f(x[i:(i+nLag-1)],...)
			},x,f,nLag,...)
}

rollApply <- function(x,nLag,f,...){
	nx <- length(x)
	n <- nx - nLag + 1
	lapply(1:n,function(i,x,f,nLag,...){
				f(x[i:(i+nLag-1)],...)
			},x,f,nLag,...)
}

